<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel='stylesheet' href='../rurple.css' type='text/css'>
<title>35. 另外一种定义</title>
</head>
<body>
<h2 class="title">35. 另外一种定义</h2>
<p>你觉得下面的对于乐跑机器人的定义怎么样?<br>
<br>
<b>机器人</b>: 一个机器, 它可以在人的控制下,自动的执行任务, 大部分时候在执行重复的任务.</p>
<p>当你写一个故事的时候, 你应该知道如何用字典查找一个词的定义. Python有一套他自己的字典, 对你写程序很有帮助.</p>
<!--==============================-->
<hr width="50%">
<h3 class="section">这是多少个鸡蛋?</h3>
<p>我们的list是非常有用的... 如果不看, 你记得我们需要多少个鸡蛋吗? 你能够不打印所有内容而得出结果吗?
除非你能都记得很清楚, 否则你很难得到结果. 然而, 如果我们使用另外一个Python 对象, 它叫做 <i>dict</i>, 事情就变得容易了. 比如:</p>
<pre>
&gt;&gt;&gt; ingredients2 = { <span class="string">'eggs'</span> : 4,  <span class= "comment"># notice the curly bracket after the = sign?</span>
...     <span class="string">'sugar'</span>: <span class="string">'100 g'</span>,
...     <span class="string">'cocoa powder'</span>: <span class=
"string">'30 ml'</span>,
...     <span class="string">'semi-sweet chocolate'</span>: <span
class="string">'250 g'</span>} <span class= "comment"># curly bracket here too.</span>
&gt;&gt;&gt; <span class="keyword">print</span> ingredients2
{<span class="string">'eggs'</span>: 4, <span class=
"string">'semi-sweet chocolate'</span>: <span class=
"string">'250 g'</span>, <span class=
"string">'cocoa powder'</span>: <span class=
"string">'30 ml'</span>, <span class=
"string">'sugar'</span>: <span class="string">'100 g'</span>}
</pre>
<p>dict里面的每一个条目都是由 "主键 : 值"的方式构成, 条目之间用逗号隔开. 留意一下,
当我们 <span class="keyword">print</span> <tt>ingredients2</tt>, 我们看到的顺序和我们放进去的时候不一样.</p>
<p>现在, 如果我们想知道鸡蛋的数量, 做法很简单:</p>
<pre>
&gt;&gt;&gt; <span class=
"keyword">print</span> ingredients2['eggs']
4
</pre>
<p>如果我们想得到
<tt>ingredients2</tt>里面所有的值, 我们可以这样做:</p>
<pre>
&gt;&gt;&gt; <span class="keyword">for</span> key <span class=
"keyword">in</span> ingredients2:
...     <span class="keyword">print</span> ingredients2[key]
...    
4
250 g
30 ml
100 g
</pre>
<p>我们也可以这样做:</p>
<pre>
&gt;&gt;&gt; <span class="keyword">for</span> key <span class=
"keyword">in</span> ingredients2:
...     <span class="keyword">print</span> str(key) + <span
class="string">":"</span> + str(ingredients2[key])
    
eggs:4
semi-sweet chocolate:250 g
cocoa powder:30 ml
sugar:100 g
</pre>
<p>我们使用了内置函数 <tt>str()</tt> 来把对象转换成字符串,这样我们可以对字符串进行操作.</p>
<p>哦... 我又把奶油给忘了! 让我们加上他:</p>
<pre>
&gt;&gt;&gt; ingredients2[<span class=
"string">"whipped cream"</span>] = <span class=
"string">"Lots!"</span>
</pre>
<p>试试看!</p>
<!--==============================-->
<hr width="50%">
<h3 class="section">不是任何对象都可以成为主键</h3>
<p>我们可以把任何对象作为值放到dict里面, 只有
<i>不可变的</i> 对象可以成为主键. 我们很快会理解这是什么意思; 就现在而言, 他是说, 只有数字和字符串可以成为主键. 你不能使用list和dict作为主键. 尝试用这些对象作为dict里面的主键和值, 然后看看Python会怎么说!</p>
<!--==============================-->
<hr width="50%">
<h3 class="try">小测验</h3>
<p>你能够猜出如何从dict删除一个条目吗? 如果你猜出来了, 就试试. 如果没, 那就说明你上节课没好好听讲. 重新看一下, 特别是如何删除list里面的条目.</p>
<center><a href="34-lists.htm"><img alt="previous" src=
"../../images/previous.png">巧克力慕斯蛋糕的食谱.</a> - <a href=
"../lessons_toc.htm"><img alt="home" src="../../images/home.png"></a> - <a href=
"36-tuples.htm">最后一个序列<img alt="next"
src="../../images/next.png"></a></center>
</body>
</html>
